inspector: Make GMenu content show up
authorMatthias Clasen <mclasen@redhat.com>
Thu, 5 Jun 2014 13:29:18 +0000 (09:29 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 5 Jun 2014 13:29:18 +0000 (09:29 -0400)
My problem was that all the content is usually hidden away
in sections, so without recursion, nothing shows up. So,
implement the recursion then.

gtk/inspector/menu.c
gtk/inspector/menu.ui

index d73d3f26fd68d728f473b994ad50e4874e2bfca9..652e30832178a8d38ab06655b36375e042ccf34a 100644 (file)
@@ -43,6 +43,10 @@ gtk_inspector_menu_init (GtkInspectorMenu *sl)
   gtk_widget_init_template (GTK_WIDGET (sl));
 }
 
+static void add_menu (GtkInspectorMenu *sl,
+                      GMenuModel       *menu,
+                      GtkTreeIter      *parent);
+
 static void
 add_item (GtkInspectorMenu *sl,
           GMenuModel       *menu,
@@ -55,6 +59,7 @@ add_item (GtkInspectorMenu *sl,
   gchar *action = NULL;
   gchar *target = NULL;
   gchar *icon = NULL;
+  GMenuModel *model;
 
   g_menu_model_get_item_attribute (menu, idx, G_MENU_ATTRIBUTE_LABEL, "s", &label);
   g_menu_model_get_item_attribute (menu, idx, G_MENU_ATTRIBUTE_ACTION, "s", &action);
@@ -74,6 +79,24 @@ add_item (GtkInspectorMenu *sl,
                       COLUMN_ICON, icon,
                       -1);
 
+  model = g_menu_model_get_item_link (menu, idx, G_MENU_LINK_SECTION);
+  if (model)
+    {
+      if (label == NULL)
+        gtk_tree_store_set (sl->priv->model, &iter,
+                            COLUMN_LABEL, _("Unnamed section"),
+                            -1);
+      add_menu (sl, model, &iter);
+      g_object_unref (model);
+    }
+
+  model = g_menu_model_get_item_link (menu, idx, G_MENU_LINK_SUBMENU);
+  if (model)
+    {
+      add_menu (sl, model, &iter);
+      g_object_unref (model);
+    }
+
   g_free (label);
   g_free (action);
   g_free (target);
index b63ee92f09fda4613cf39d02719c6c7091e14833..07b5be3a0f7b37b7a8cb425f4646bc65e039e339 100644 (file)
@@ -22,7 +22,6 @@
           <object class= "GtkTreeView">
             <property name="visible">True</property>
             <property name="model">model</property>
-            <property name="activate-on-single-click">True</property>
             <child>
               <object class="GtkTreeViewColumn">
                 <property name="title" translatable="yes">Label</property>